import qs from 'qs'
import axios from 'axios'
import {
	getToken,
	setToken,
	removeToken
} from './auth.js'

const baseURL = process.env.VUE_APP_BASE_API

axios.defaults.headers['Content-Type'] = 'application/json;'
// 创建axios实例
const service = axios.create({
	// axios中请求配置有baseURL选项，表示请求URL公共部分
	// baseURL: 'https://47.99.133.183:4443',
	baseURL,
	// 超时
	timeout: 20000
})

// request拦截器
service.interceptors.request.use(config => {
	// 是否需要设置 token
	const isToken = (config.headers || {}).isToken === false
	if (getToken() && !isToken) {
		config.headers['user-token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
	}
	// get请求映射params参数
	if (config.method === 'get' && config.params) {
		let url = config.url + qs.stringify(config.params);
		config.params = {};
		config.url = url;
	}
	return config
}, error => {
	Promise.reject(error)
})

// 响应拦截器
service.interceptors.response.use(res => {

	const userToken = res.headers['user-token']
	userToken && setToken(userToken)

	if (res.status === 200) {
		let result = res.data
		switch (result.code) {
			case 200:
				return Promise.resolve(result)
			case 100:
				removeToken()
				location.href = '/'
				break;
			default:
				break;
		}
	}
	return Promise.reject(res.data)
},
	error => {
		return Promise.reject(error)
	}
)

export default service